#include <iostream>

using std::cout;
using std::endl;

void func(int &x)
{

}

void func2(int &&x)
{

}

void test()
{
    int a = 10; 
    int b = 20;

    func(a);
    func2(10);
    &a;
    &b;
    /* &(a + b);//error */
    int &ref = a;//ok
    /* int &ref2 = 10;//error */
    const int &ref3 = 10;//ok
    &ref;

    int &&rref = 10;//ok
    &rref;
    /* int &&rref2 = a;//error */
    //非const的左值引用只能绑定左值，不能绑定右值；
    //右值引用只能绑定右值，不能绑定左值
    //const左值引用即可以绑定左值也可以绑定右值

}

int main(int argc, char *argv[])
{
    test();
    return 0;
}

